<?php
/**
 * common repository file Created by PhpStorm.
 * User: wumengmeng
 * Date: 2019/08/20
 * Time: 06:07
 */
 
 namespace HiCommon\Repository;

use HiCommon\Model\UsersIntegral;

class UsersIntegralRepository extends BaseRepository
{
    public function base_model(){
        return new \HiCommon\Model\UsersIntegral();
    }

    /**
     * 分页获取全部数据
     *
     * @param array $arr_option
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_all($arr_option = [])
    {
        return UsersIntegral::commonget($arr_option);
    }

    /**
     * 分页获取数据
     *
     * @param array $arr_option
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_list( array $arr_search , array $arr_option = [])
    {
        return UsersIntegral::where(
            function ($query)
            use($arr_search) {
                if(!empty($arr_search['type'])){
                    $query->where('type',$arr_search['type']);
                }
                if(!empty($arr_search['title']) && !empty($arr_search['user_id']) ){
                    $query->where('user_id',$arr_search['user_id']);
                }
                if( !empty( $arr_search['times'] ) ){
                    $times = get_ctime( $arr_search['times'] );
                    $times = explode( ' _ ' , $times );
                    $query->where('created_at' , '>=' , $times[0] );
                    $query->where('created_at' , '<=' , $times[1] );
                }
            })->commonpage($arr_option);
    }


    /**
     *  根据指定条件统计数据
     *  hinq 2019 11 29
     *
     **/
    public function increase_sum( array $arr_search ,int $type ){

        return UsersIntegral::where(
            function ($query)
            use($arr_search) {
//                if(!empty($arr_search['type'])){
//                    $query->where('type',$arr_search['type']);
//                }
                if(!empty($arr_search['title']) && !empty($arr_search['user_id']) ){
                    $query->where('user_id',$arr_search['user_id']);
                }
                if( !empty( $arr_search['times'] ) ){
                    $times = get_ctime( $arr_search['times'] );
                    $times = explode( ' _ ' , $times );
                    $query->where('created_at' , '>=' , $times[0] );
                    $query->where('created_at' , '<=' , $times[1] );
                }
            })->where('type',$type)->sum('deduct');

    }



    /**
     * 通过where分页获取数据
     *
     * @param array $arr_where
     * @param array $arr_option
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_list_by_where($arr_where,$arr_option = [])
    {
        return UsersIntegral::where($arr_where)->commonpage($arr_option);

    }
    
    /**
     * 根据条件统计数量
     *
     * @param array $arr_where
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_count_by_where($arr_where , $arr_search = [] )
    {

        return UsersIntegral::where($arr_where)->where( function ($query)
        use($arr_search) {
            if( !empty( $arr_search['times'] ) ){
                $times = get_ctime( $arr_search['times'] );
                $times = explode( ' _ ' , $times );
                $query->where('created_at' , '>=' , $times[0] );
                $query->where('created_at' , '<=' , $times[1] );
            }
        })->sum('deduct');
    }





    /**
     * 根据条件统计总和
     *
     * @param array  $arr_where
     * @param string $s_field
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_sum_by_where($arr_where = [],$s_field = 'mark')
    {
        return UsersIntegral::where($arr_where)->sum($s_field);
    }

    /**
     * 添加一条数据
     *
     * @param array $arr_input
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function add_one($arr_input)
    {
        return UsersIntegral::create($arr_input);
    }

    /**
     * 查询一条数据
     *
     * @param int $n_id
     * @param array $arr_option
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function get_one(int $n_id, $arr_option = [])
    {
        return UsersIntegral::commonfind($n_id, $arr_option);
    }

    /**
     * 修改一条数据
     *
     * @param array $arr_input
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function edit_one(array $arr_input)
    {
        return UsersIntegral::where('id',$arr_input['id'])->update($arr_input);
    }

    /**
     * 删除一条数据
     *
     * @param int $n_id
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function delete_one(int $n_id)
    {
        return UsersIntegral::where('id', $n_id)
                             ->commondelete();
    }

    /**
     * 修改一条数据状态
     *
     * @param int $n_id
     * @param int $n_state
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function change_one_state(int $n_id,int $n_state)
    {
        return UsersIntegral::where('id',$n_id)->update(['state'=>$n_state]);

    }
    
    /**
     * 字段自增
     *
     * @param int    $n_id
     * @param string $s_field
     * @param int    $n_step
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function increase_num($n_id,$s_field = 'commend_num',$n_step = 1)
    {
        return UsersIntegral::where('id',$n_id)->increment($s_field,$n_step);
    }

    /**
     * 字段自减
     *
     * @param int    $n_id
     * @param string $s_field
     * @param int    $n_step
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function decrease_num($n_id,$s_field = 'commend_num',$n_step = 1)
    {
        return UsersIntegral::where('id',$n_id)->decrement($s_field,$n_step);
    }


}